Skip to content

VS Code + MinGW64 + Clang 搭建 C++ 环境

安装 Clang

  • 下载地址
  • 在最新版本中选择 Windows (64-bit) 预编译版,即 Pre-Built Binaries 中的 Windows (64-bit)

img

安装 MinGW

解压后,将所有文件移动到 C:\Program Files\LLVM

覆盖即可,无冲突,无需添加环境变量

安装相关插件

  • C/C++
  • C/C++ Clang Command Adapter
  • Clang-Format
  • Code Runner

更改相关设置

打开 VScode,File-Preferences-Settings,右上角以 JSON 方式打开设置文件 (settings.json)

C/C++ Clang Command Adapter

json
{
  "C_Cpp.clang_format_path": "${env:LLVM}/bin/clang-format", //设置 clang-format 路径,以便实现代码格式化功能
  "C_Cpp.default.compilerPath": "${env:LLVM}/bin/clang --target=x86_64-w64-mingw32", //设置 Clang 作为编译器,用 target 参数指定 MinGW64 作为编译器后端。
  "C_Cpp.errorSquiggles": "Disabled", //禁用插件 1 错误提示
  "clang.cflags": ["--target=x86_64-w64-mingw32", "-std=c11"], //为插件 2 设置编译参数
  "clang.cxxflags": ["--target=x86_64-w64-mingw32", "-std=c++17"], //为插件 2 设置编译参数
  "clang.completion.enable": false //禁用插件 (2) 代码补全(较慢),而利用插件 (1) 实现。
}

Clang-Format

添加以下语句,用 Clang-Format 插件来格式化代码

json
"[c]": {
    "editor.defaultFormatter": "xaver.clang-format"
},
"[cpp]": {
    "editor.defaultFormatter": "xaver.clang-format"
},

Code Runner

将默认的 gcc/g++ 编译器替换为 clang/clang++ 编译器

打开 Code Runner 的设置,找到 Code-runner: Executor Map 点击 Edit in settings.json

"code-runner.executorMap" 中的

json
{
  "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
  "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
}

注释掉,替换为

json
{
  "c": "cd $dir && clang $fileName -o $fileNameWithoutExt.exe --target=x86_64-w64-mingw32 -lm && $dir$fileNameWithoutExt.exe",
  "cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe --target=x86_64-w64-mingw32 -lm && $dir$fileNameWithoutExt.exe"
}

解决中文乱码

解决方法:将 PowerShell 编码改为 UTF-8

  1. 以管理员模式启动 Windows PowerShell,执行 Set-ExecutionPolicy Unrestricted
  2. 打开 "此电脑 - 文档",新建文件夹 "WindowsPowerShell" 并进入。新建文本文档并命名为:Microsoft.PowerShell_profile.ps1 用记事本编辑,粘贴以下代码并保存:$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
  3. 打开 PowerShell 执行:chcp
  4. 结果显示 Active code page: 65001 即为成功

参考资料